package com.zym.pss.cargo.controller;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import com.zym.pss.baseinfo.po.Product;
import com.zym.pss.baseinfo.po.Repository;
import com.zym.pss.baseinfo.service.ProductService;
import com.zym.pss.baseinfo.service.RepositoryService;
import com.zym.pss.cargo.po.ProductPut;
import com.zym.pss.cargo.po.Stock;
import com.zym.pss.cargo.service.ProductPutService;
import com.zym.pss.cargo.service.StockService;
import com.zym.pss.core.controller.BaseController;
import com.zym.pss.core.pargination.Page;
import com.zym.pss.sysadmin.vo.UserVo;
import com.zym.pss.util.UtilFuns;
@Controller
@RequestMapping("/cargo/productput")
public class ProductPutController extends BaseController {
@Resource
ProductPutService productPutService; // 货物出库Service
@Resource
ProductService productService; // 原材料Service
@Resource
StockService stockService; // 库存Service
@Resource
RepositoryService repositoryService; // 仓库Service
// 存放列表信息
private List<ProductPut> dataList;
/**
* 跳转到列表页面
*/
@RequestMapping("/list.action")
public String list(Model model,Integer pageNo,HttpSession session ) {
//获取租户信息
UserVo curuser = (UserVo) session.getAttribute("CURUSER");
// dataList = productPutService.find(null);
//------------------------------------分页操作----------------------------------------
Page<ProductPut> page = new Page<ProductPut>();
if(pageNo != null){
page.setPageNo(pageNo); //获取页面传递过来的页号
}
page.setTenantId(curuser.getTenantId()); //设置租户号
dataList = productPutService.findPage(page);
model.addAttribute("pageLinks", page.pageLinks("list.action")); //返回翻页的的HTML语句
//------------------------------------------------------------------------------------
model.addAttribute("dataList", dataList);
return "/cargo/productput/jProductPutList.jsp";
}
@RequestMapping("/toview.action")
public String toview(String id, Model model) {
ProductPut obj = this.productPutService.get(id);
model.addAttribute("obj", obj);
return "/cargo/productput/jProductPutView.jsp";
}
/**
* 跳到添加页面
*/
@RequestMapping("/tocreate.action")
public String tocreate(Model model , HttpSession session ) {
//获取租户信息
UserVo curuser = (UserVo) session.getAttribute("CURUSER");
Map<String, Object> paraMap1 = new HashMap<String, Object>();
paraMap1.put("tenantId", curuser.getTenantId());
// 准备货物下拉列表
List<Product> productList = this.productService.find(paraMap1);
// 准备原材料仓库下拉列表
Map<String, Object> paraMap = new HashMap<String, Object>();
paraMap.put("type", "2");
paraMap.put("tenantId", curuser.getTenantId());
List<Repository> repositoryList = this.repositoryService.find(paraMap);
model.addAttribute("productList", productList);
model.addAttribute("repositoryList", repositoryList);
return "/cargo/productput/jProductPutCreate.jsp";
}
/**
* 添加
*/
@RequestMapping("/insert.action")
public String create(ProductPut productPut ,HttpSession session ) {
//获取租户信息
UserVo curuser = (UserVo) session.getAttribute("CURUSER");
String tenantId = curuser.getTenantId() ;
productPut.setTenantId(tenantId);
this.productPutService.insert(productPut);
return "redirect:/cargo/productput/list.action";
}
/**
* 跳到更新页面
*/
@RequestMapping("/toupdate.action")
public String toupdate(String id, Model model,HttpSession session ) {
//获取要更新的对象
ProductPut obj = this.productPutService.get(id);
if(obj.getState() == 0 ){
model.addAttribute("obj", obj);
//获取租户信息
UserVo curuser = (UserVo) session.getAttribute("CURUSER");
//当入库单状态为未登记状态时,才可以修改入库单信息
Map<String, Object> paraMap1 = new HashMap<String, Object>();
paraMap1.put("tenantId", curuser.getTenantId());
// 准备原材料下拉列表
List<Product> productList = this.productService.find(paraMap1);
// 准备原材料仓库下拉列表
Map<String, Object> paraMap = new HashMap<String, Object>();
paraMap.put("type", "2");
paraMap.put("tenantId", curuser.getTenantId());
List<Repository> repositoryList = this.repositoryService.find(paraMap);
model.addAttribute("productList", productList);
model.addAttribute("repositoryList", repositoryList);
return "/cargo/productput/jProductPutUpdate.jsp";
}else{
return "redirect:/cargo/productput/list.action";
}
}
/**
* 更新
*/
@RequestMapping("/update.action")
public String update(ProductPut productPut) {
this.productPutService.update(productPut);
return "redirect:/cargo/productput/list.action";
}
/**
* 删除
*/
@RequestMapping("/deleteById.action")
public String deleteById(String id) {
this.productPutService.deleteById(id);
return "redirect:/cargo/productput/list.action";
}
/**
* 批量删除
*/
@RequestMapping("/delete.action")
public String delete(@RequestParam("id") String[] ids) {
for(int i = 0 ;i<ids.length;i++){
ProductPut pp = productPutService.get(ids[i]);
if(pp.getState()==0){
this.productPutService.delete(new String[]{ids[i]});
}
}
return "redirect:/cargo/productput/list.action";
}
/**
* 上报出库单
*
* @param id
* @return
*/
@RequestMapping("/start.action")
public String start(@RequestParam("id") String[] ids,Model model,HttpSession session ) {
//获取用户信息
UserVo curuser = (UserVo) session.getAttribute("CURUSER");
//库存操作结果信息
String msg = "" ;
// 原材料入库操作
for(int i = 0 ; i<ids.length;i++){
ProductPut p = productPutService.get(ids[i]); //获取原材料入库单
if(p.getState() == 0 ){ //当状态为 未登记状态时 进行 操作
Stock stock = new Stock() ; //创建库存记录
stock.setGoodsNo(p.getProductNo());
stock.setGoodsName(p.getProductName());
stock.setGoodsType("2");
stock.setAmount(p.getProductAmount());
stock.setRepositoryNo(p.getRepositoryNo());
stock.setPackingUnit(p.getPackingUnit());
stock.setTenantId(curuser.getTenantId());
Stock st = stockService.findByGoodNo(p.getProductNo(),p.getRepositoryNo() , curuser.getTenantId()); //通过货物编号,查询库存记录
//如果库存中没有记录,添加库存
if(UtilFuns.isNotEmpty(st)){
stockService.updateStockAmount(p.getProductNo(),p.getRepositoryNo(),p.getProductAmount()+st.getAmount(), curuser.getTenantId());
msg = "货物入库成功!!";
}else{ //如果库存中有记录,更新库存量
stockService.insert(stock); //添加到库存中
msg = "库存记录创建成功!!";
}
//修改库存记录状态
this.productPutService.updateState(new String[]{ids[i]}, 1);
}else{
msg = "%>_<% 该入库单已被登记过!! 请认真核实!!";
}
}
//返回到结果页面
model.addAttribute("msg", msg);
model.addAttribute("listUrl", "list.action");
return "/exception/error.jsp";
}
/**
* 取消订单
*
* @param ids
* @return
*/
@RequestMapping("/cancel.action")
public String cancel(@RequestParam("id") String[] ids) {
this.productPutService.updateState(ids, 0);
return "redirect:/cargo/productput/list.action";
}
}